home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / nfs_iostat.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.8 KB  |  120 lines

  1. /*
  2.  *  User-space visible declarations for NFS client per-mount
  3.  *  point statistics
  4.  *
  5.  *  Copyright (C) 2005, 2006 Chuck Lever <cel@netapp.com>
  6.  *
  7.  *  NFS client per-mount statistics provide information about the
  8.  *  health of the NFS client and the health of each NFS mount point.
  9.  *  Generally these are not for detailed problem diagnosis, but
  10.  *  simply to indicate that there is a problem.
  11.  *
  12.  *  These counters are not meant to be human-readable, but are meant
  13.  *  to be integrated into system monitoring tools such as "sar" and
  14.  *  "iostat".  As such, the counters are sampled by the tools over
  15.  *  time, and are never zeroed after a file system is mounted.
  16.  *  Moving averages can be computed by the tools by taking the
  17.  *  difference between two instantaneous samples  and dividing that
  18.  *  by the time between the samples.
  19.  */
  20.  
  21. #ifndef _LINUX_NFS_IOSTAT
  22. #define _LINUX_NFS_IOSTAT
  23.  
  24. #define NFS_IOSTAT_VERS        "1.0"
  25.  
  26. /*
  27.  * NFS byte counters
  28.  *
  29.  * 1.  SERVER - the number of payload bytes read from or written
  30.  *     to the server by the NFS client via an NFS READ or WRITE
  31.  *     request.
  32.  *
  33.  * 2.  NORMAL - the number of bytes read or written by applications
  34.  *     via the read(2) and write(2) system call interfaces.
  35.  *
  36.  * 3.  DIRECT - the number of bytes read or written from files
  37.  *     opened with the O_DIRECT flag.
  38.  *
  39.  * These counters give a view of the data throughput into and out
  40.  * of the NFS client.  Comparing the number of bytes requested by
  41.  * an application with the number of bytes the client requests from
  42.  * the server can provide an indication of client efficiency
  43.  * (per-op, cache hits, etc).
  44.  *
  45.  * These counters can also help characterize which access methods
  46.  * are in use.  DIRECT by itself shows whether there is any O_DIRECT
  47.  * traffic.  NORMAL + DIRECT shows how much data is going through
  48.  * the system call interface.  A large amount of SERVER traffic
  49.  * without much NORMAL or DIRECT traffic shows that applications
  50.  * are using mapped files.
  51.  *
  52.  * NFS page counters
  53.  *
  54.  * These count the number of pages read or written via nfs_readpage(),
  55.  * nfs_readpages(), or their write equivalents.
  56.  *
  57.  * NB: When adding new byte counters, please include the measured
  58.  * units in the name of each byte counter to help users of this
  59.  * interface determine what exactly is being counted.
  60.  */
  61. enum nfs_stat_bytecounters {
  62.     NFSIOS_NORMALREADBYTES = 0,
  63.     NFSIOS_NORMALWRITTENBYTES,
  64.     NFSIOS_DIRECTREADBYTES,
  65.     NFSIOS_DIRECTWRITTENBYTES,
  66.     NFSIOS_SERVERREADBYTES,
  67.     NFSIOS_SERVERWRITTENBYTES,
  68.     NFSIOS_READPAGES,
  69.     NFSIOS_WRITEPAGES,
  70.     __NFSIOS_BYTESMAX,
  71. };
  72.  
  73. /*
  74.  * NFS event counters
  75.  *
  76.  * These counters provide a low-overhead way of monitoring client
  77.  * activity without enabling NFS trace debugging.  The counters
  78.  * show the rate at which VFS requests are made, and how often the
  79.  * client invalidates its data and attribute caches.  This allows
  80.  * system administrators to monitor such things as how close-to-open
  81.  * is working, and answer questions such as "why are there so many
  82.  * GETATTR requests on the wire?"
  83.  *
  84.  * They also count anamolous events such as short reads and writes,
  85.  * silly renames due to close-after-delete, and operations that
  86.  * change the size of a file (such operations can often be the
  87.  * source of data corruption if applications aren't using file
  88.  * locking properly).
  89.  */
  90. enum nfs_stat_eventcounters {
  91.     NFSIOS_INODEREVALIDATE = 0,
  92.     NFSIOS_DENTRYREVALIDATE,
  93.     NFSIOS_DATAINVALIDATE,
  94.     NFSIOS_ATTRINVALIDATE,
  95.     NFSIOS_VFSOPEN,
  96.     NFSIOS_VFSLOOKUP,
  97.     NFSIOS_VFSACCESS,
  98.     NFSIOS_VFSUPDATEPAGE,
  99.     NFSIOS_VFSREADPAGE,
  100.     NFSIOS_VFSREADPAGES,
  101.     NFSIOS_VFSWRITEPAGE,
  102.     NFSIOS_VFSWRITEPAGES,
  103.     NFSIOS_VFSGETDENTS,
  104.     NFSIOS_VFSSETATTR,
  105.     NFSIOS_VFSFLUSH,
  106.     NFSIOS_VFSFSYNC,
  107.     NFSIOS_VFSLOCK,
  108.     NFSIOS_VFSRELEASE,
  109.     NFSIOS_CONGESTIONWAIT,
  110.     NFSIOS_SETATTRTRUNC,
  111.     NFSIOS_EXTENDWRITE,
  112.     NFSIOS_SILLYRENAME,
  113.     NFSIOS_SHORTREAD,
  114.     NFSIOS_SHORTWRITE,
  115.     NFSIOS_DELAY,
  116.     __NFSIOS_COUNTSMAX,
  117. };
  118.  
  119. #endif    /* _LINUX_NFS_IOSTAT */
  120.